home *** CD-ROM | disk | FTP | other *** search
/ Delphi Developer's Kit 1996 / Delphi Developer's Kit 1996.iso / power / stabaru / statbaru.pas next >
Pascal/Delphi Source File  |  1995-12-22  |  9KB  |  282 lines

  1. unit Statbaru;
  2.  
  3. interface
  4.  
  5. { -********************************************- }
  6. { - Authored: ---------------------------------- }
  7. { - 5-16-95 By Eric Uber. CIS Address 71102,3034 }
  8. { - All rights reserved.                         }
  9. { -********************************************- }
  10. { ---------------------------------------------- }
  11. { Directions:                                    }
  12. { 1. Install.                                    }
  13. { 2. Drop on form.                               }
  14. { 3. Set the UpdateInterval property.            }
  15. { 4. Set Enabled property to True;               }
  16. { ---------------------------------------------- }
  17. uses
  18.   SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
  19.   Forms, Dialogs, extctrls;
  20.  
  21. const
  22.   defHeight: integer = 25;
  23.   defWidth: integer = 100;
  24.   defUpdateIntr: integer = 1000;
  25.  
  26. type
  27.   TSectionBevels = (sbLow,sbLowest,sbHigh,sbHighest,sbIsUpDown,sbIsDownUp,sbNone);
  28.  
  29.   TMyCustomPanel = class(TCustomPanel)
  30.   private
  31.     procedure WMLButtonDown(var msg: TMessage); message wm_LButtonDown;
  32.   protected
  33.     property BevelInner;
  34.     property BevelOuter;
  35.   end;
  36.  
  37.   TEStatusBar = class(TMyCustomPanel)
  38.   private
  39.     { Private declarations }
  40.     FSectionDateBevel    : TSectionBevels;
  41.     FSectionTimeBevel    : TSectionBevels;
  42.     FSectionMainBevel    : TSectionBevels;
  43.     FAlignTime           : TAlign;
  44.     FAlignDate           : TAlign;
  45.     FWidthTime           : integer;
  46.     FWidthDate           : integer;
  47.     FEnabled             : Boolean;
  48.     FOnTimer             : TNotifyEvent;
  49.     FUpdateInterval      : integer;
  50.   protected
  51.     { Protected declarations }
  52.     pnlDate: TMyCustomPanel;
  53.     pnlTime: TMyCustomPanel;
  54.     procedure SetFSectionMainBevel(Bev: TSectionBevels);
  55.     procedure SetFSectionDateBevel(Bev: TSectionBevels);
  56.     procedure SetFSectionTimeBevel(Bev: TSectionBevels);
  57.     procedure SetFEnabled(bIsEnabled: Boolean);
  58.     procedure SetFAlignTime(oAlign:TAlign);
  59.     procedure SetFAlignDate(oAlign:TAlign);
  60.     procedure SetBevels(oCaller: TCustomPanel; Prop: TSectionBevels);
  61.     procedure SetFWidthTime(iVal: integer);
  62.     procedure SetFWidthDate(iVal: integer);
  63.     procedure SetFUpdateInterval(iVal: integer);
  64.     procedure WMTimer(var msg: TWMTimer); message wm_Timer;
  65.   public
  66.     { Public declarations }
  67.     constructor Create(AOwner: TComponent); override;
  68.   published
  69.     { Published declarations }
  70.     property SectMainBevel: TSectionBevels read FSectionMainBevel
  71.                             write SetFSectionMainBevel;
  72.     property SectDateBevel: TSectionBevels read FSectionDateBevel
  73.                             write SetFSectionDateBevel;
  74.     property SectTimeBevel: TSectionBevels read FSectionTimeBevel
  75.                             write SetFSectionTimeBevel;
  76.     property AlignTime: TAlign read FAlignTime write SetFAlignTime;
  77.     property AlignDate: TAlign read FAlignDate write SetFAlignDate;
  78.     property Align;
  79.     property Caption;
  80.     property WidthTime: integer read FWidthTime write SetFWidthTime
  81.                             default 100; {defWidth}
  82.     property WidthDate: integer read FWidthDate write SetFWidthDate
  83.                             default 100; {defWidth}
  84.     property Enabled: Boolean read FEnabled write SetFEnabled;
  85.     property OnTimer: TNotifyEvent read FOnTimer write FOnTimer;
  86.     property UpdateInterval: integer read FUpdateInterval write SetFUpdateInterval
  87.                             default 1000;{defUpdateIntr}
  88.     property Font;
  89.     property ParentFont;
  90.   end;
  91.  
  92. procedure Register;
  93.  
  94. { -********************************************- }
  95. { - Begin Implimentation **********************- }
  96. { -********************************************- }
  97. implementation
  98.  
  99. {-----------------------------------------------}
  100. {-----------------------------------------------}
  101. procedure Register;
  102. begin
  103.   RegisterComponents('Custom', [TEStatusBar]);
  104. end; { End proc. }
  105.  
  106. {-----------------------------------------------}
  107. {-----------------------------------------------}
  108. constructor TEStatusBar.Create(AOwner: TComponent);
  109. begin
  110.   inherited Create(AOwner);
  111.   Height := defHeight;
  112.   Align := alBottom;
  113.  
  114.   pnlDate:= TMyCustomPanel.Create(nil);
  115.   with pnlDate do
  116.   begin
  117.     Parent := Self;
  118.     ParentFont := True;
  119.     BevelOuter := bvLowered;
  120.     BevelInner := bvNone;
  121.   end;
  122.  
  123.   pnlTime:= TMyCustomPanel.Create(nil);
  124.   with pnlTime do
  125.   begin
  126.     Parent := Self;
  127.     ParentFont := True;
  128.     BevelOuter := bvLowered;
  129.     BevelInner := bvNone;
  130.   end;
  131.  
  132.   WidthTime  := defWidth;
  133.   WidthDate  := defWidth;
  134.  
  135.   AlignDate := alLeft;
  136.   AlignTime := alLeft;
  137.  
  138.   SectDateBevel := sbLow;
  139.   SectTimeBevel := sbLow;
  140. end; { End proc. }
  141.  
  142. {-----------------------------------------------}
  143. {-----------------------------------------------}
  144. procedure TEStatusBar.SetFSectionMainBevel(Bev: TSectionBevels);
  145. begin
  146.   FSectionMainBevel := Bev;
  147.   SetBevels(self,FSectionMainBevel);
  148. end;  { End proc. }
  149.  
  150. {-----------------------------------------------}
  151. {-----------------------------------------------}
  152. procedure TEStatusBar.SetFSectionDateBevel(Bev: TSectionBevels);
  153. begin
  154.   FSectionDateBevel := Bev;
  155.   SetBevels(pnlDate,FSectionDateBevel);
  156. end; { End proc. }
  157.  
  158. {-----------------------------------------------}
  159. {-----------------------------------------------}
  160. procedure TEStatusBar.SetFSectionTimeBevel(Bev: TSectionBevels);
  161. begin
  162.   FSectionTimeBevel := Bev;
  163.   SetBevels(pnlTime,FSectionTimeBevel);
  164. end; { End proc. }
  165.  
  166. {-----------------------------------------------}
  167. {-----------------------------------------------}
  168. procedure TEStatusBar.SetBevels(oCaller: TCustomPanel; Prop: TSectionBevels);
  169. begin
  170.   case Prop of
  171.     sbHighest:
  172.        begin
  173.         (oCaller as TMyCustomPanel).BevelOuter := bvRaised;
  174.         (oCaller as TMyCustomPanel).BevelInner := bvRaised;
  175.        end;
  176.     sbLowest:
  177.        begin
  178.          (oCaller as TMyCustomPanel).BevelOuter := bvLowered;
  179.          (oCaller as TMyCustomPanel).BevelInner := bvLowered;
  180.        end;
  181.     sbNone:
  182.        begin
  183.          (oCaller as TMyCustomPanel).BevelOuter := bvNone;
  184.          (oCaller as TMyCustomPanel).BevelInner := bvNone;
  185.        end;
  186.     sbIsUpDown:
  187.        begin
  188.          (oCaller as TMyCustomPanel).BevelOuter := bvRaised;
  189.          (oCaller as TMyCustomPanel).BevelInner := bvLowered;
  190.        end;
  191.     sbIsDownUp:
  192.        begin
  193.          (oCaller as TMyCustomPanel).BevelOuter := bvLowered;
  194.          (oCaller as TMyCustomPanel).BevelInner := bvRaised;
  195.        end;
  196.     sbLow:
  197.        begin
  198.          (oCaller as TMyCustomPanel).BevelOuter := bvLowered;
  199.          (oCaller as TMyCustomPanel).BevelInner := bvNone;
  200.        end;
  201.     sbHigh:
  202.        begin
  203.          (oCaller as TMyCustomPanel).BevelOuter := bvRaised;
  204.          (oCaller as TMyCustomPanel).BevelInner := bvNone;
  205.        end;
  206.   end; { End Case. }
  207. end; { End proc. }
  208.  
  209. {-----------------------------------------------}
  210. {-----------------------------------------------}
  211. procedure TMyCustomPanel.WMLButtonDown(var msg: TMessage);
  212. begin
  213.   inherited;
  214.   SendMessage(Parent.Handle,wm_LButtonDown,msg.wParam,msg.LParam);
  215. end; { End proc. }
  216.  
  217. {-----------------------------------------------}
  218. {-----------------------------------------------}
  219. procedure TEStatusBar.SetFAlignTime(oAlign:TAlign);
  220. begin
  221.   FAlignTime := oAlign;
  222.   pnlTime.Align := oAlign;
  223. end; { End proc. }
  224.  
  225. {-----------------------------------------------}
  226. {-----------------------------------------------}
  227. procedure TEStatusBar.SetFAlignDate(oAlign: TAlign);
  228. begin
  229.   FAlignDate := oAlign;
  230.   pnlDate.Align := oAlign;
  231. end;  { End Proc. }
  232.  
  233. {-----------------------------------------------}
  234. {-----------------------------------------------}
  235. procedure TEStatusBar.SetFWidthTime(iVal: integer);
  236. begin
  237.   FWidthTime := iVal;
  238.   pnlTime.Width := iVal;
  239. end; { End Proc. }
  240.  
  241. {-----------------------------------------------}
  242. {-----------------------------------------------}
  243. procedure TEStatusBar.SetFWidthDate(iVal: integer);
  244. begin
  245.   FWidthDate    := iVal;
  246.   pnlDate.Width := iVal;
  247. end; { End Proc. }
  248.  
  249. {-----------------------------------------------}
  250. {-----------------------------------------------}
  251. procedure TEStatusBar.SetFEnabled(bIsEnabled: Boolean);
  252. begin
  253.   FEnabled := bIsEnabled;
  254.   if (bIsEnabled) then
  255.      Settimer(Self.Handle,Self.Handle,FUpdateInterval,nil)
  256.   else
  257.      KillTimer(Self.Handle,Self.Handle);
  258. end; { End Proc }
  259.  
  260. {-----------------------------------------------}
  261. {-----------------------------------------------}
  262. procedure TEStatusBar.WMTimer(var msg: TWMTimer);
  263. begin
  264.   inherited;
  265.   if ( Assigned(FOnTimer)) then
  266.        FOnTimer(self);
  267.  
  268.   pnlDate.Caption := DateToStr(Date);
  269.   pnlTime.Caption := TimeToStr(Time);
  270. end; { End Proc. }
  271.  
  272. {-----------------------------------------------}
  273. {-----------------------------------------------}
  274. procedure TEStatusBar.SetFUpdateInterval(iVal: integer);
  275. begin
  276.   FUpdateInterval := iVal;
  277.   Enabled := False;
  278.   Enabled := True;
  279. end;  { End Proc. }
  280.  
  281. end. { End unit. }
  282.